package com.lyncc.netty.codec.lengthFieldBasedFrame;

 
import java.nio.charset.Charset;

 
import io.netty.buffer.ByteBuf;

import io.netty.channel.ChannelHandlerContext;

import io.netty.handler.codec.MessageToByteEncoder;

 
public class CustomEncoder extends MessageToByteEncoder<CustomMsg> {

 
@Override

protected void encode(ChannelHandlerContext ctx, CustomMsg msg, ByteBuf out) throws Exception {

if(null == msg){

throw new Exception("msg is null");

}

 
String body = msg.getBody();

byte[] bodyBytes = body.getBytes(Charset.forName("utf-8"));

out.writeByte(msg.getType());

out.writeByte(msg.getFlag());

out.writeInt(bodyBytes.length);

out.writeBytes(bodyBytes);

 
}

 
}